"""
设计思想：
将 n 个数字全部放进数组，并都置为肯定状态（True）
将数组下标是偶数的数字全部置为否定状态（False）
依次遍历数组长度的平方根个数字
如果当前数字处于被肯定的状态，则将其倍数的数字状态置为否定
"""
import math


def find_prime(num):
    primes_bool = [False, False] + [True] * (num - 1)
    for i in range(3, len(primes_bool)):
        if i % 2 == 0:
            primes_bool[i] = False

    for i in range(3, int(math.sqrt(num)) + 1):
        if primes_bool[i] is True:
            for j in range(i + i, num + 1, i):
                primes_bool[j] = False

    primes = []
    for i, v in enumerate(primes_bool):
        if v is True:
            primes.append(i)

    return primes


print(find_prime(100))

